1. Field of the Invention
This invention generally relates to data processing systems including one or more hosts and one or more data storage systems, such as a disk array, or direct access, storage device, with multiple physical disk drives and more specifically to a method and apparatus for enabling multiple hosts to issue optimized overlapping input-output, or I/O, requests to a particular logical device in the data storage system.
2. Description of Related Art
As the capabilities of data processing systems have increased, applications for use in those data processing systems have become more sophisticated. Now a data processing system may contain multiple hosts operating with independent host applications that access data in a large capacity data storage system either directly or over a network. Today, data storage systems are generally divided into logical devices or into blocks called by other names, such as logical volumes, data sets, files, etc. It is highly desirable that a data storage system in which a single logical device, that may store multiple files, be enabled to handle multiple concurrent requests for access to different files even from one or more different hosts and host applications.
A conventional data processing system includes a main frame computer or host including multiple central processors that interact with a data storage system. The data storage system generally includes a xe2x80x9cdisk array storage device,xe2x80x9d or xe2x80x9cdirect access storage devicexe2x80x9d (e.g., a xe2x80x9cDASDxe2x80x9d) in which multiple physical disk drives are organized in multiple logical devices. The host communicates with the DASD through I/O requests provided by the operating system associated with the host. The host operating system heretofore has generally limited accesses to a given logical device to a single access at a time. For example, in the known MVS operating system, one unit control block (UCB) is assigned to each logical device. When a first I/O request identifies a file or dataset in a logical device, a UCB assigned to that logical device is set to a busy state until the entire I/O request is completed. Any following requests for the same logical device generated during the interval of the first request were queued to await the availability of that one UCB even though the I/O request was to a different file or dataset. Consequently, this feature forced all the I/O requests to a single logical device to be handled in seriatim.
There are some applications in which such an I/O request serialization may not adversely effect all operations. For example, in data storage systems that incorporate cache memory with the physical disk drives write operations merely transfer data to the cache memory. Read operations that identify data within the cache memory are handled in a minimal time so there is a minimal delay until a next read or write operation can be started. If it could be assured that all such requests could be handled in the cache memory, serialization would impose a minimal penalty. However, in most applications data will be required that is not in the cache memory, so access to a physical disk drive for the data will be necessary. The resulting interval for transferring data from the physical disk drive to the cache memory is significantly longer than the time to transfer data between the host and the cache memory. Consequently, other write and read requests, that might otherwise access data already in the cache, are delayed until the read miss operation has been completed. In these situations serialization adversely affects host processing significantly.
In accordance with one new approach an operating system that normally uses one unit control block, or UCB, defines that UCB as a xe2x80x9cbase UCBxe2x80x9d. A number of unassigned UCB""s are allocated to the same logical device. These are known as alias UCB""s. In accordance with this approach a host can issue concurrent or overlapped I/O requests by assigning each different request to one of the base or alias UCB""s up to the total number of UCB""s allocated to the logical device. However, this approach is imbedded in an upgrade to an existing operating system. It has not been possible to retrofit existing operating systems with this feature. As a result in many installations there is a strong reluctance to adopt this desirable feature because significant personnel and equipment resources must be allocated to the installation of such an upgrade. What is needed is an ability to provide existing operating systems with a parallel access feature.
In the MVS operating system an I/O request takes the form of a number of channel command words (or CCW""s). An access method in MVS responds to an I/O request by generating, as its first CCW, a Define Extent CCW that defines the total range of locations that will be locked during any given I/O request. Some prior software tends to assign a default value in the Define Extent CCW that includes the entire logical device as the extent. Following channel command words in the I/O request specify read or write operations which identify the starting and ending locations of one or more blocks of data or whole tracks to be actually transferred. Typically this xe2x80x9crequired extentxe2x80x9d is significantly smaller than the size of the defined extent established by the Define Extent CCW. When this occurs, it becomes very difficult to realize the full benefit of the parallel access activity. Locking large portions of or the entirety of a logical device effectively serializes operations in the DASD as successive I/O requests are generated by the operating system.
Multiple reads to the same logical device can be readily accommodated particularly when the data being read lies in the cache memory. Such situations generally occur when multiple host systems have access to the same data. When a write operation occurs, it is necessary to block any subsequent read operations to avoid any overlaps that could generate corrupt data. In accordance with the prior art, the entire extent established by the Define Extent command is blocked for a write operation. Consequently, the introduction of a write operation can materially effect the throughput of subsequent read operations. What is needed is a way to optimize the extents to minimize any delays that are produced and to enable a greater flexibility in handling multiple I/O requests, especially when writing data.
Therefore it is an object of this invention to provide a method and apparatus for allowing multiple concurrent accesses to a single logical device in a data storage system.
Another object of this invention is to provide multiple concurrent accesses to a single logical device in a data storage system utilizing a conventional operating system.
Still another object of this invention is to provide a method and apparatus for optimizing multiple input/output requests directed to a single logical device in a data storage system.
Yet another object of this invention is to provide a method and apparatus for optimizing multiple input/output requests to a single logical device in a data storage system capable of accommodating multiple concurrent or overlapped accesses.
Yet still another object of this invention is to provide the capability of accessing the same logical device in a data storage system from multiple hosts with explicit allegiances.
Still another object of this invention is to provide the capability of accessing the same logical device in a data storage system from multiple hosts with explicit allegiances where the requests for access are overlapped.
Still another object of this invention is to enable multiple hosts to access a logical device in a data storage system with explicit allegiances wherein each I/O request is optimized.
Still another object of this invention is to provide the ability to direct multiple I/O requests from multiple hosts with explicit allegiances in combination with the capability of accommodating multiple concurrent or overlapped I/O requests.
In accordance with this invention a host can generate overlapped input-output requests for a logical volume in a disk array storage device. The host operating system normally utilizes a first, uniquely identified, base unit control block corresponding to the logical volume to effect a transfer in response to the input-output request. Within the host there are defined at least one related, uniquely identified unit control block that identifies the logical volume. A parallel access control block is established for each unit control block associated with the logical volume and a parallel access main control block for the logical volume through which each of the base and related unit control blocks can be identified. The host responds to the input-output request by interrupting the operating system and assigning one of the base and related unit control blocks to the input-output request. Then the host returns control of the response to the input-output request to the operating system identifying the assigned unit control block whereby the host operating system can issue overlapped input-output requests to the given logical volume. Within the disk array storage facility a table is established for the logical volume with an entry input-output requests and corresponding parameters. Parameters for each new input-output request to the logical volume are tested with respect to the parameters for input-output request entries in the table. The test determines which, of a plurality of control functions including enabling the processing of the input-output request by the storage facility, will be performed.